package net.lqy.aipan.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 *
 * </p>
 *
 * @author lqy
 * @since 2025-06-01
 */
@Getter
@Setter
@Schema(name = "AccountFileDTO", description = "用户文件数据传输对象")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AccountFileDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(description = "id")
    @JsonProperty("id")
    private Long id;

    @Schema(description = "用户ID")
    @JsonProperty("account_id")
    private Long accountId;

    @Schema(description = "上层文件夹ID")
    @JsonProperty("parent_id")
    private Long parentId;

    @Schema(description = "（0：文件，1：文件夹）")
    @TableField("is_dir")
    private Integer isDir;


    @Schema(description = "文件ID（关联file表）")
    @JsonProperty("file_id")
    private Long fileId;

    @Schema(description = "文件名")
    @JsonProperty("file_name")
    private String fileName;

    @Schema(description = "文件类型")
    @JsonProperty("file_type")
    private String fileType;

    @Schema(description = "文件后缀")
    @JsonProperty("file_suffix")
    private String fileSuffix;

    @Schema(description = "文件大小（字节）")
    @JsonProperty("file_size")
    private Long fileSize;

    @Schema(description = "逻辑删除（0未删，1删除）")
    @JsonProperty("del")
    private Boolean del;

    @Schema(description = "删除时间")
    @JsonProperty("del_time")
    private Date delTime;

    @Schema(description = "修改时间")
    @JsonProperty("gmt_modified")
    private Date gmtModified;

    @Schema(description = "创建时间")
    @JsonProperty("gmt_create")
    private Date gmtCreate;
}
